﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Dominio;

namespace Interfaz
{
    public partial class VentIVAs : Form
    {

        #region atributos

        private List<IVA> lIVAs;
        private int ultimoIdIVA;
        private bool ingreso;
        private IVA actualIVA;

        #endregion

        #region constructor

        public VentIVAs()
        {
            InitializeComponent();
            ingreso = true;
            lIVAs = Sistema.getIVAs();
            ultimoIdIVA = Sistema.getUltimoIdIVA();
            limpiarCampos();
        }

        #endregion

        #region eventos

        private void BotonCancelar_Click(object sender, EventArgs e)
        {
            this.Dispose();
        }

        private void BotonAceptar_Click(object sender, EventArgs e)
        {
            if (validarDatos())
            {
                int porcentaje = int.Parse(TextoPorcentaje.Text);
                if (ingreso)
                {
                    ultimoIdIVA += 1;
                    actualIVA.OID = ultimoIdIVA;
                    actualIVA.Nombre = TextoNombre.Text;
                    actualIVA.Porcentaje = porcentaje;
                    Sistema.agregarIVA(TextoNombre.Text, porcentaje);
                    lIVAs.Add(actualIVA);
                    limpiarCampos();
                }
                else
                {
                    actualIVA.Nombre = TextoNombre.Text;
                    actualIVA.Porcentaje = porcentaje;
                    Sistema.modificarIVA(TextoNombre.Text, porcentaje, actualIVA);
                    limpiarCampos();
                }
            }
        }        

        private void buttonNuevo_Click(object sender, EventArgs e)
        {
            limpiarCampos();
        }

        private void buttonEliminar_Click(object sender, EventArgs e)
        {
            if (listaIVAs.SelectedIndex != -1)
            {
                Sistema.eliminarIVA(actualIVA);
                lIVAs.Remove(actualIVA);
                limpiarCampos();
            }
        }

        private void listaIVAs_Click(object sender, EventArgs e)
        {
            if (listaIVAs.SelectedIndex != -1)
            {
                ingreso = false;
                actualIVA = (IVA)listaIVAs.SelectedItem;
                labelId.Text = actualIVA.OID.ToString();
                TextoNombre.Text = actualIVA.Nombre;
                TextoPorcentaje.Text = actualIVA.Porcentaje.ToString();                
            }
        }

        private void TextoPorcentaje_TextChanged(object sender, EventArgs e)
        {
            try
            {
                int num = int.Parse(TextoPorcentaje.Text);
            }
            catch (Exception)
            {
                TextoPorcentaje.Text = "0";
            }
        }

        #endregion

        #region metodos

        private bool validarDatos()
        {
            bool ok = true;
            if (TextoNombre.Text.Equals("") && ok)
            {
                MessageBox.Show("Error. Nombre vacío");
                ok = false;
            }
            try
            {
                int num = int.Parse(TextoPorcentaje.Text);
            }
            catch (Exception)
            {
                MessageBox.Show("Error de formato en porcentaje");
                ok = false;
            }            
            return ok;
        }

        private void limpiarCampos()
        {
            ingreso = true;
            labelId.Text = "";
            TextoNombre.Text = "";
            TextoPorcentaje.Text = "0";            
            listaIVAs.DataSource = lIVAs.ToArray();
            actualIVA = new IVA();
        }

        #endregion
        
    }
}
